// bigFish.js 大鱼实现类
// BigFish 构造函数
var BigFish=function(){
	// 保存大鱼的眼睛
	this.bigEye=[];
	// 保存大鱼的身体
	this.bigBody=[];
	// 保存大鱼的尾巴
	this.bigTail=[];
	// 创建两个变量保存的大鱼的位置坐标x和坐标y
	this.x=null;
	this.y=null;
	// 保存大鱼游动的角度
	this.angle=null;
	// 大鱼眼睛图片的切换
	// 眼睛的数组下标（0/1）
	this.bigEyeIndex=0;
	// 眼睛切换计时时间开始
	this.bigEyeStart=1;
	// 眼睛切换计时时间结束
	this.bigEyeEnd=3000;
	// 尾巴数组下标
	this.bigTailIndex = 0;
	// 尾巴切换时间开始
	this.bigTailStart=1;
	// 尾巴切换时间结束
	this.bigTailEnd=3000;
	// 身体数组下标
	this.bigBodyIndex = 0;
	// 身体切换时间开始
	this.bigBodyStart=1;
	// 身体切换时间结束
	this.bigBodyEnd=3000;
}
// init 初始化大鱼
BigFish.prototype.init=function(){
	// 循环：初始化大鱼的眼睛
	for(var i=0;i<2;i++){
		this.bigEye[i]=new Image();
		this.bigEye[i].src=`./img/bigEye${i}.png`;
	}
	// 循环：初始化大鱼的身体
	for(var i=0;i<8;i++){
		this.bigBody[i]=new Image();
		this.bigBody[i].src=`./img/bigSwim${i}.png`;
	}
	// 循环：初始化大鱼的尾巴
	for(var i=0;i<8;i++){
		this.bigTail[i]=new Image();
		this.bigTail[i].src=`./img/bigTail${i}.png`;
	}
	// 初始化大鱼的位置（默认在屏幕中心）
	this.x=canWidth/2;
	this.y=canHeight/2;
	// 初始化大鱼的角度为0
	this.angle=0;
}
// draw 绘制大鱼
// 大鱼绘制在cvs1中，画笔为ctx1
BigFish.prototype.draw=function(){
	// 获取鼠标的位置，并将鼠标的位置赋值给大鱼
	// 运动的反应慢一点：0.9--0.98
	this.x=cursorPosition(mouse_x,this.x,0.98);
	this.y=cursorPosition(mouse_y,this.y,0.98);
	// 设置大鱼的角度随鼠标发生改变
	// 计算鼠标与大鱼的坐标差
	var deltaY=mouse_y-this.y;
	var deltaX=mouse_x-this.x;
	// 计算鼠标与大鱼的角度差（Math方法）
	var beta=Math.atan2(deltaY,deltaX)+Math.PI;
	// 大鱼面向鼠标修改角度（公式）
	this.angle=changeAngle(beta,this.angle,0.9);
	
	// 设置大鱼尾巴的切换
	this.bigTailStart+=deltaTime;
	if(this.bigTailStart>this.bigTailEnd){
		this.bigTailStart = 1;
		this.bigTailIndex = (this.bigTailIndex+1)%8;
	}
	// 设置大鱼身体的切换
	this.bigBodyStart+=deltaTime;
	if(this.bigBodyStart>this.bigBodyEnd){
		this.bigBodyStart = 1;   
		this.bigBodyIndex = this.bigBodyIndex+1;
		if(this.bigBodyIndex>7){
			this.bigBodyIndex = 7;
		}
	}
	
	// 设置大鱼眼睛的切换效果
	// 累加开始时间
	this.bigEyeStart+=deltaTime;
	// 如果眼睛开始时间大于结束时间
	if(this.bigEyeStart>this.bigEyeEnd){
		// 切换下标
		this.bigEyeIndex=(this.bigEyeIndex+1)%2;
		// 将开始时间恢复为0
		this.bigEyeStart=0;
		// 修改闭眼睛时间
		if(this.bigEyeIndex==1){
			this.bigEyeEnd=300;
		}
		// 修改睁眼睛时间
		if(this.bigEyeIndex==0){
			this.bigEyeEnd=3000;
		}
	}
	// 保存画笔1的状态
	ctx1.save()
	// 移动画布原点
	ctx1.translate(this.x,this.y);
	// 大鱼旋转的角度
	ctx1.rotate(this.angle)
	// 绘制大鱼身体
	ctx1.drawImage(this.bigBody[this.bigBodyIndex],
	    -this.bigBody[this.bigBodyIndex].width*0.5,
	    -this.bigBody[this.bigBodyIndex].height*0.5);
	// 绘制大鱼尾巴
	ctx1.drawImage(this.bigTail[this.bigTailIndex],
	    -this.bigTail[this.bigTailIndex].width*0.5+30,
	    -this.bigTail[this.bigTailIndex].height*0.5);
	// 绘制大鱼眼睛
	ctx1.drawImage(this.bigEye[this.bigEyeIndex],
	    -this.bigEye[this.bigEyeIndex].width*0.5,
	    -this.bigEye[this.bigEyeIndex].height*0.5);
	// 回复画笔1的状态
	ctx1.restore();
	
}